/**
 * 侮辱性词汇字典库
 * 用于论坛评论内容审核
 */

// 中文侮辱性词汇
const chineseInsultingWords = [
  '傻逼', '白痴', '混蛋', '废物', '蠢货', '王八蛋', '草泥马', '操你', '垃圾','贱人', 
  '婊子', '妓女', '猪狗', '畜生', '吃屎', '去死', '脑残', '弱智',
  '二货', '神经病', '贱货', '人渣', '人妖', '变态', '死鬼', '死人',
  '孬种', '废柴', '窝囊废', '狗东西', '猪头', '蠢猪', '蠢材', '龌龊', '恶心','二逼',
  '傻叉'
];

// 英文侮辱性词汇
const englishInsultingWords = [
  'shit', 'stupid', 'idiot', 'fuck', 'bitch', 'damn', 'bastard', 'asshole', 'crap',
  'moron', 'jerk', 'dumb', 'loser', 'fool', 'dick', 'pussy', 'sucker', 'trash',
  'scum', 'garbage', 'pig', 'dog', 'slut', 'retard', 'whore', 'dumbass', 'jackass',
  'creep', 'pervert', 'lowlife', 'scumbag', 'motherfucker', 'turd', 'prick', 'freak'
];

// 特殊符号和变种（可能用于规避过滤）
const specialCharactersAndVariants = [
  'f*ck', 'f**k', 'f***', 's*it', 'b*tch', 'a**hole', 'sh!t', 'b!tch',
  'f@ck', 'sh@t', '5h1t', 'b17ch', 'a55', 'a$$', 'f4k', '$h1t'
];

// 拼音或谐音（用于规避中文检测）
const pinyinAndHomophones = [
  'shabi', 'baichi', 'sb', 'caonima', 'cnm', 'nima', 'nimei', 'nmd',
  'wangba', 'biaozi', 'siling', 'jiangshi', 'bendan', 'shenjingbing'
];

// 组合所有词汇
const allInsultingWords = [
  ...chineseInsultingWords,
  ...englishInsultingWords,
  ...specialCharactersAndVariants,
  ...pinyinAndHomophones
];

/**
 * 检查文本是否包含侮辱性词汇
 * @param {string} text 要检查的文本
 * @returns {boolean} 是否包含侮辱性词汇
 */
export function containsInsultingWords(text) {
  if (!text) return false;
  
  const lowerText = text.toLowerCase();
  return allInsultingWords.some(word => lowerText.includes(word.toLowerCase()));
}

/**
 * 获取文本中包含的所有侮辱性词汇
 * @param {string} text 要检查的文本
 * @returns {string[]} 包含的侮辱性词汇列表
 */
export function getInsultingWordsInText(text) {
  if (!text) return [];
  
  const lowerText = text.toLowerCase();
  return allInsultingWords.filter(word => lowerText.includes(word.toLowerCase()));
}

// 导出词汇列表
export const insultingWords = allInsultingWords;

// 导出分类词汇列表
export const categorizedInsultingWords = {
  chinese: chineseInsultingWords,
  english: englishInsultingWords,
  special: specialCharactersAndVariants,
  pinyin: pinyinAndHomophones
};

export default {
  insultingWords,
  categorizedInsultingWords,
  containsInsultingWords,
  getInsultingWordsInText
}; 